package com.bawei.image

import android.content.Context
import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.MultiTransformation
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.Rotate
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import jp.wasabeef.glide.transformations.BlurTransformation

/**
 * Author: Jason Zhang
 * Date: 2024/12/13
 * Desc: Glide图片加载工具
 */
object GlideImgLoader {

    /**
     * 普通图片加载
     */
    fun loadImg(ctx: Context, url: String, iv: ImageView){
        Glide.with(ctx)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))
            .error(ColorDrawable(Color.RED))
            .skipMemoryCache(true)
            //RESOURCE缓存处理之后的图片，Data缓存原始图片，NONE不缓存，AUTOMATIC自动缓存，ALL缓存所有图片（包含原图和处理后图片）
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
            .transform(CenterCrop())
            .into(iv)
    }

    /**
     * 圆形图片加载
     */
    fun loadCircleImg(ctx: Context, url: String, iv: ImageView){
        Glide.with(ctx)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))
            .error(ColorDrawable(Color.RED))
            .skipMemoryCache(true)
            //RESOURCE缓存处理之后的图片，Data缓存原始图片，NONE不缓存，AUTOMATIC自动缓存，ALL缓存所有图片（包含原图和处理后图片）
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
            .transform(CenterCrop(), CircleCrop())
            .into(iv)
    }

    /**
     * 圆角图片加载
     */
    fun loadRoundImg(ctx: Context, url: String, radio: Int, iv: ImageView){
        Glide.with(ctx)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))
            .error(ColorDrawable(Color.RED))
            .skipMemoryCache(true)
            //RESOURCE缓存处理之后的图片，Data缓存原始图片，NONE不缓存，AUTOMATIC自动缓存，ALL缓存所有图片（包含原图和处理后图片）
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
            .transform(CenterCrop(), RoundedCorners(radio))
            .into(iv)
    }

    /**
     * 项目资源图片加载
     */
    fun loadResImg(view: View, resId: Int, iv: ImageView){
        Glide.with(view)
            .load(resId)
            .skipMemoryCache(true)
            .transform(CenterCrop())
            .into(iv)
    }

    /**
     * 图片旋转加载
     */
    fun loadRotateImg(view: View, resId: Int, deg: Int, iv: ImageView){
        Glide.with(view)
            .load(resId)
            .skipMemoryCache(true)
            .transform(Rotate(deg))
            .into(iv)
    }

    /**
     * 半透明（高斯模糊）图片加载
     */
    fun loadBlurCircleImg(ctx: Context, url: String, iv: ImageView){

        //配置多种图片转换效果
        var options: MultiTransformation<Bitmap> = MultiTransformation(
            BlurTransformation(), //模糊效果
            CircleCrop(),
            CenterCrop()
        )

        Glide.with(ctx)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))
            .error(ColorDrawable(Color.RED))
            .skipMemoryCache(true)
            //RESOURCE缓存处理之后的图片，Data缓存原始图片，NONE不缓存，AUTOMATIC自动缓存，ALL缓存所有图片（包含原图和处理后图片）
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE)
            .apply(RequestOptions.bitmapTransform(options))
            .into(iv)
    }







}